<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Win32k: xlate.c 文件参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Win32k
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('a00929.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#func-members">函数</a> &#124;
<a href="#var-members">变量</a>  </div>
  <div class="headertitle">
<div class="title">xlate.c 文件参考</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="a03629_source.html">precomp.h</a>&quot;</code><br />
</div>
<p><a href="a00929_source.html">浏览源代码.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
函数</h2></td></tr>
<tr class="memitem:a82da6132abc06de6bfe434eaedafa5bd"><td class="memItemLeft" align="right" valign="top">WORD&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00929.html#a82da6132abc06de6bfe434eaedafa5bd">GetModifierBits</a> (<a class="el" href="a00347.html#af5c516577752d829db371ad605b1a06a">PMODIFIERS</a> pModifiers, LPBYTE afKeyState)</td></tr>
<tr class="separator:a82da6132abc06de6bfe434eaedafa5bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a92510e600b434cb284d0a1bc06bffd9f"><td class="memItemLeft" align="right" valign="top">WORD&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00929.html#a92510e600b434cb284d0a1bc06bffd9f">GetModificationNumber</a> (<a class="el" href="a00347.html#af5c516577752d829db371ad605b1a06a">PMODIFIERS</a> pModifiers, WORD wModBits)</td></tr>
<tr class="separator:a92510e600b434cb284d0a1bc06bffd9f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a0394f6aa879a10c4525b3c11157299"><td class="memItemLeft" align="right" valign="top">BYTE&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00929.html#a9a0394f6aa879a10c4525b3c11157299">VKFromVSC</a> (<a class="el" href="a00347.html#a770ffbf7854eca4db8f1f01340bfe19d">PKE</a> pke, BYTE bPrefix, LPBYTE afKeyState)</td></tr>
<tr class="separator:a9a0394f6aa879a10c4525b3c11157299"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae865573ac8481a37774e67cde256284e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00929.html#ae865573ac8481a37774e67cde256284e">InternalMapVirtualKeyEx</a> (<a class="el" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a> wCode, <a class="el" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a> wType, <a class="el" href="a00347.html#a6e6030f7dc50fba8bffa4e89f9328c85">PKBDTABLES</a> pKbdTbl)</td></tr>
<tr class="separator:ae865573ac8481a37774e67cde256284e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a876901e067ed17e2213160ff1c1044ab"><td class="memItemLeft" align="right" valign="top">int <a class="el" href="a00962.html#a428a91acf2c2439dc1a257708ee1f805">APIENTRY</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00929.html#a876901e067ed17e2213160ff1c1044ab">_GetKeyNameText</a> (LONG lParam, LPWSTR lpStr, int cchSize)</td></tr>
<tr class="separator:a876901e067ed17e2213160ff1c1044ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4002aab46f9ea99ed4c9eed3c233e687"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00929.html#a4002aab46f9ea99ed4c9eed3c233e687">AltGr</a> (<a class="el" href="a00347.html#a770ffbf7854eca4db8f1f01340bfe19d">PKE</a> pKe)</td></tr>
<tr class="separator:a4002aab46f9ea99ed4c9eed3c233e687"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18c318c4bfc48c573fc43f9ece4d457c"><td class="memItemLeft" align="right" valign="top">BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00929.html#a18c318c4bfc48c573fc43f9ece4d457c">KEOEMProcs</a> (<a class="el" href="a00347.html#a770ffbf7854eca4db8f1f01340bfe19d">PKE</a> pKe)</td></tr>
<tr class="separator:a18c318c4bfc48c573fc43f9ece4d457c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a297b777a39ee6e6597a4b787a207c5bd"><td class="memItemLeft" align="right" valign="top">BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00929.html#a297b777a39ee6e6597a4b787a207c5bd">KELocaleProcs</a> (<a class="el" href="a00347.html#a770ffbf7854eca4db8f1f01340bfe19d">PKE</a> pKe)</td></tr>
<tr class="separator:a297b777a39ee6e6597a4b787a207c5bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
变量</h2></td></tr>
<tr class="memitem:ad584d240c6587fb7fa7c79d3d12cb42d"><td class="memItemLeft" align="right" valign="top">BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00929.html#ad584d240c6587fb7fa7c79d3d12cb42d">gbAltGrDown</a> = FALSE</td></tr>
<tr class="separator:ad584d240c6587fb7fa7c79d3d12cb42d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">函数说明</h2>
<a id="a876901e067ed17e2213160ff1c1044ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a876901e067ed17e2213160ff1c1044ab">&#9670;&nbsp;</a></span>_GetKeyNameText()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="a00962.html#a428a91acf2c2439dc1a257708ee1f805">APIENTRY</a> _GetKeyNameText </td>
          <td>(</td>
          <td class="paramtype">LONG&#160;</td>
          <td class="paramname"><em>lParam</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">LPWSTR&#160;</td>
          <td class="paramname"><em>lpStr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>cchSize</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="a00929_source.html">xlate.c</a> 第 <a class="el" href="a00929_source.html#l00384">384</a> 行定义.</p>
<div class="fragment"><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;{</div>
<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;    BYTE Vsc = LOBYTE(HIWORD(lParam));</div>
<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;    <a class="code" href="a02117.html">PVSC_LPWSTR</a> pKN;</div>
<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;    <a class="code" href="a02889.html">PTHREADINFO</a> ptiT = PtiCurrentShared();</div>
<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;    <a class="code" href="a02121.html">PKBDTABLES</a> pKbdTbl;</div>
<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;    <a class="code" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a> Vk;</div>
<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;    <a class="code" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a> Char;</div>
<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160; </div>
<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;    <span class="keywordflow">if</span> (cchSize &lt; 1)</div>
<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;        <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160; </div>
<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;<span class="comment">     * If bit 25 set (don&#39;t care about the extended bit) then clear bit 24,</span></div>
<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;<span class="comment">     * unless this is the Delete/Num-Del key (0x53), which is bass-ackward.</span></div>
<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;    <span class="keywordflow">if</span> (lParam &amp; <a class="code" href="a00347.html#a02d6166547fcefe9036ce166733fb86c">DONTCARE_BIT</a>) {</div>
<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;        <span class="keywordflow">if</span> (Vsc == 0x53) {</div>
<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;           lParam |= <a class="code" href="a00347.html#aa8286b6273fa173b26ea440fde99d8c9">EXTENDED_BIT</a>;</div>
<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;        } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;           lParam &amp;= ~<a class="code" href="a00347.html#aa8286b6273fa173b26ea440fde99d8c9">EXTENDED_BIT</a>;</div>
<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;        }</div>
<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;    }</div>
<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160; </div>
<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;    <span class="keywordflow">if</span> (ptiT-&gt;<a class="code" href="a02889.html#a09237cbbe78ba3aebf853599bced5ac8">spklActive</a> == (<a class="code" href="a02793.html">PKL</a>)NULL) {</div>
<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;        <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;    }</div>
<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;    pKbdTbl = ptiT-&gt;<a class="code" href="a02889.html#a09237cbbe78ba3aebf853599bced5ac8">spklActive</a>-&gt;<a class="code" href="a02793.html#a920717ffed3d170bbe0f357ad65985ef">spkf</a>-&gt;<a class="code" href="a02789.html#ac8cf048dc524a9e172bd89087361f74a">pKbdTbl</a>;</div>
<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160; </div>
<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;<span class="comment">     * Scan pKbdTbl-&gt;pKeyNames[] or pKeyNamesExt[] for matching Virtual Scan Code</span></div>
<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;    <span class="keywordflow">if</span> (lParam &amp; <a class="code" href="a00347.html#aa8286b6273fa173b26ea440fde99d8c9">EXTENDED_BIT</a>) {</div>
<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;        pKN = pKbdTbl-&gt;<a class="code" href="a02121.html#a2c00703870b1480fb20afcc40a485289">pKeyNamesExt</a>;</div>
<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;    } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;        pKN = pKbdTbl-&gt;<a class="code" href="a02121.html#a942601a57170773f877df781f2a3aa51">pKeyNames</a>;</div>
<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;    }</div>
<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160; </div>
<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;    <span class="keywordflow">if</span> (pKN) {</div>
<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;        <span class="keywordflow">while</span> (pKN-&gt;<a class="code" href="a02117.html#a6fdd61425d46bba71b27db8a56006cc8">vsc</a> != 0) {</div>
<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;            <span class="keywordflow">if</span> (Vsc == pKN-&gt;<a class="code" href="a02117.html#a6fdd61425d46bba71b27db8a56006cc8">vsc</a>) {</div>
<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160; </div>
<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;                cchSize = <a class="code" href="a00365.html#a2313d9960d832da75d595b73ff75d1dc">wcsncpycch</a>(lpStr, pKN-&gt;<a class="code" href="a02117.html#aecc277f34253dd62d9b6e388f104e407">pwsz</a>, cchSize);</div>
<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;                cchSize--;</div>
<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;                lpStr[cchSize] = L<span class="charliteral">&#39;\0&#39;</span>;</div>
<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;                <span class="keywordflow">return</span> cchSize;</div>
<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;            }</div>
<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;            pKN++;</div>
<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;        }</div>
<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;    }</div>
<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160; </div>
<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;<span class="comment">     * The name of the key was not found in the table, so we</span></div>
<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;<span class="comment">     * now attempt to construct the key name from the character produced by</span></div>
<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;<span class="comment">     * the key.  Translate Scancode -&gt; Virtual Key -&gt; character.</span></div>
<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160; </div>
<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;<span class="comment">     * Translate Scancode to Virtual Key (ignoring modifier keys etc.)</span></div>
<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;    Vk = <a class="code" href="a00929.html#ae865573ac8481a37774e67cde256284e">InternalMapVirtualKeyEx</a>((<a class="code" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a>)Vsc, 1, pKbdTbl);</div>
<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;    <span class="keywordflow">if</span> (Vk == 0) {</div>
<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;        <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;    }</div>
<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160; </div>
<div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;<span class="comment">     * Now translate Virtual Key to character (ignoring modifier keys etc.)</span></div>
<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;    Char = <a class="code" href="a00929.html#ae865573ac8481a37774e67cde256284e">InternalMapVirtualKeyEx</a>((<a class="code" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a>)Vk, 2, pKbdTbl);</div>
<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;    <span class="keywordflow">if</span> (Char == 0) {</div>
<div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;        <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;    }</div>
<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160; </div>
<div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;    <span class="keywordflow">if</span> (Char &amp; 0x80000000) {</div>
<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;        LPWSTR *ppwsz;</div>
<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160; </div>
<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;        ppwsz = pKbdTbl-&gt;<a class="code" href="a02121.html#a54fa7ee0c101a45ebf04e6d97e48bc2a">pKeyNamesDead</a>;</div>
<div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;        <span class="keywordflow">if</span> (ppwsz) {</div>
<div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;            <span class="keywordflow">while</span> (*ppwsz != NULL) {</div>
<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;                <span class="keywordflow">if</span> (*ppwsz[0] == (WCHAR)Char) {</div>
<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;                    cchSize = <a class="code" href="a00365.html#a2313d9960d832da75d595b73ff75d1dc">wcsncpycch</a>(lpStr, (*ppwsz)+1, cchSize);</div>
<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;                    cchSize--;</div>
<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;                    lpStr[cchSize] = L<span class="charliteral">&#39;\0&#39;</span>;</div>
<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;                    <span class="keywordflow">return</span> cchSize;</div>
<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;                }</div>
<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;                ppwsz++;</div>
<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;            }</div>
<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;        }</div>
<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;    }</div>
<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160; </div>
<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;<span class="comment">     * Construct a single character name (adding null-terminator if possible)</span></div>
<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;    lpStr[0] = (WCHAR)Char;</div>
<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;    <span class="keywordflow">if</span> (cchSize &gt;= 2) {</div>
<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;        lpStr[1] = L<span class="charliteral">&#39;\0&#39;</span>;</div>
<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;    }</div>
<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;    <span class="keywordflow">return</span> 1;</div>
<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;}</div>
</div><!-- fragment -->
<p class="reference">引用了 <a class="el" href="a00347_source.html#l00048">DONTCARE_BIT</a>, <a class="el" href="a00347_source.html#l00047">EXTENDED_BIT</a>, <a class="el" href="a00929_source.html#l00216">InternalMapVirtualKeyEx()</a>, <a class="el" href="a00899_source.html#l01643">tagKBDFILE::pKbdTbl</a>, <a class="el" href="a00347_source.html#l00483">tagKbdLayer::pKeyNames</a>, <a class="el" href="a00347_source.html#l00485">tagKbdLayer::pKeyNamesDead</a>, <a class="el" href="a00347_source.html#l00484">tagKbdLayer::pKeyNamesExt</a>, <a class="el" href="a00347_source.html#l00449">VSC_LPWSTR::pwsz</a>, <a class="el" href="a00899_source.html#l01655">tagKL::spkf</a>, <a class="el" href="a00899_source.html#l02275">tagTHREADINFO::spklActive</a>, <a class="el" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT()</a>, <a class="el" href="a00347_source.html#l00448">VSC_LPWSTR::vsc</a> , 以及 <a class="el" href="a03650_source.html#l00146">wcsncpycch()</a>.</p>

<p class="reference">被这些函数引用 <a class="el" href="a03614_source.html#l07120">NtUserGetKeyNameText()</a>.</p>

</div>
</div>
<a id="a4002aab46f9ea99ed4c9eed3c233e687"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4002aab46f9ea99ed4c9eed3c233e687">&#9670;&nbsp;</a></span>AltGr()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">AltGr </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00347.html#a770ffbf7854eca4db8f1f01340bfe19d">PKE</a>&#160;</td>
          <td class="paramname"><em>pKe</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="a00929_source.html">xlate.c</a> 第 <a class="el" href="a00929_source.html#l00497">497</a> 行定义.</p>
<div class="fragment"><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;{</div>
<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;    <span class="keywordflow">if</span> (pKe == NULL) {</div>
<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;<span class="comment">         * Clear state and deactivate this key processor</span></div>
<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;        <span class="keywordflow">return</span> FALSE;</div>
<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;    }</div>
<div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160; </div>
<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;    <span class="keywordflow">if</span> ((pKe-&gt;<a class="code" href="a02093.html#a0e92b451e0b34fd1dc8d8bb2874e63bb">usFlaggedVk</a> &amp; 0xFF) != VK_RMENU) {</div>
<div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;        <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;    }</div>
<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160; </div>
<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;    <span class="keywordflow">if</span> (!(pKe-&gt;<a class="code" href="a02093.html#a0e92b451e0b34fd1dc8d8bb2874e63bb">usFlaggedVk</a> &amp; <a class="code" href="a00347.html#a3f8652b528af17dd02ea4a604210defc">KBDBREAK</a>)) {</div>
<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;<span class="comment">         * If neither CTRL key is down, then fake one going down so that</span></div>
<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;<span class="comment">         * the right hand ALT key is converted to CTRL + ALT.</span></div>
<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;        <a class="code" href="a00929.html#ad584d240c6587fb7fa7c79d3d12cb42d">gbAltGrDown</a> = TRUE;</div>
<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;        <span class="keywordflow">if</span> (!TestKeyDownBit(<a class="code" href="a03257.html#a2f3efd1c8f99c7f561e46a5743aecbee">gafPhysKeyState</a>, VK_CONTROL)) {</div>
<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;            <a class="code" href="a00347.html#aef6d4c2cd65a5df2a46e8f8a471f27e1">_KeyEvent</a>(VK_LCONTROL, 0x1D | <a class="code" href="a00347.html#a7581c59d7f9bbb088b4e14a2ae29034a">SCANCODE_SIMULATED</a>, 0);</div>
<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;        }</div>
<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;    } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;<span class="comment">         * If the physical Left Ctrl key is not really down, fake the</span></div>
<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;<span class="comment">         * Left Ctrl key coming back up (undo earlier faked Left Ctrl down)</span></div>
<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;        <a class="code" href="a00929.html#ad584d240c6587fb7fa7c79d3d12cb42d">gbAltGrDown</a> = FALSE;</div>
<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;        <span class="keywordflow">if</span> (!TestKeyDownBit(<a class="code" href="a03257.html#a2f3efd1c8f99c7f561e46a5743aecbee">gafPhysKeyState</a>, VK_LCONTROL)) {</div>
<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;            <a class="code" href="a00347.html#aef6d4c2cd65a5df2a46e8f8a471f27e1">_KeyEvent</a>(VK_LCONTROL | <a class="code" href="a00347.html#a3f8652b528af17dd02ea4a604210defc">KBDBREAK</a>, 0x1D | <a class="code" href="a00347.html#a7581c59d7f9bbb088b4e14a2ae29034a">SCANCODE_SIMULATED</a>, 0);</div>
<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;        }</div>
<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;    }</div>
<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;    <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;}</div>
</div><!-- fragment -->
<p class="reference">引用了 <a class="el" href="a00347.html#aef6d4c2cd65a5df2a46e8f8a471f27e1">_KeyEvent()</a>, <a class="el" href="a03257_source.html#l00253">gafPhysKeyState</a>, <a class="el" href="a00929_source.html#l00495">gbAltGrDown</a>, <a class="el" href="a00347_source.html#l00042">KBDBREAK</a>, <a class="el" href="a00347_source.html#l00740">SCANCODE_SIMULATED</a> , 以及 <a class="el" href="a00347_source.html#l00030">tagKE::usFlaggedVk</a>.</p>

<p class="reference">被这些函数引用 <a class="el" href="a00929_source.html#l00566">KELocaleProcs()</a>.</p>

</div>
</div>
<a id="a92510e600b434cb284d0a1bc06bffd9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a92510e600b434cb284d0a1bc06bffd9f">&#9670;&nbsp;</a></span>GetModificationNumber()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">WORD GetModificationNumber </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00347.html#af5c516577752d829db371ad605b1a06a">PMODIFIERS</a>&#160;</td>
          <td class="paramname"><em>pModifiers</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">WORD&#160;</td>
          <td class="paramname"><em>wModBits</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="a00929_source.html">xlate.c</a> 第 <a class="el" href="a00929_source.html#l00045">45</a> 行定义.</p>
<div class="fragment"><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;{</div>
<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;    <span class="keywordflow">if</span> (wModBits &gt; pModifiers-&gt;<a class="code" href="a02101.html#af0eb9068596da775c7db65526bc8538c">wMaxModBits</a>) {</div>
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;         <span class="keywordflow">return</span> <a class="code" href="a00347.html#ab3a973fcee8c98e5b9f715808a3775c3">SHFT_INVALID</a>;</div>
<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    }</div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160; </div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;    <span class="keywordflow">return</span> pModifiers-&gt;<a class="code" href="a02101.html#a18c09f0ef060c4a5639afaed42c5af7d">ModNumber</a>[wModBits];</div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;}</div>
</div><!-- fragment -->
<p class="reference">引用了 <a class="el" href="a00347_source.html#l00302">MODIFIERS::ModNumber</a>, <a class="el" href="a00347_source.html#l00308">SHFT_INVALID</a> , 以及 <a class="el" href="a00347_source.html#l00301">MODIFIERS::wMaxModBits</a>.</p>

<p class="reference">被这些函数引用 <a class="el" href="a00893_source.html#l00089">InternalToUnicodeEx()</a> , 以及 <a class="el" href="a00929_source.html#l00070">VKFromVSC()</a>.</p>

</div>
</div>
<a id="a82da6132abc06de6bfe434eaedafa5bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a82da6132abc06de6bfe434eaedafa5bd">&#9670;&nbsp;</a></span>GetModifierBits()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">WORD GetModifierBits </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00347.html#af5c516577752d829db371ad605b1a06a">PMODIFIERS</a>&#160;</td>
          <td class="paramname"><em>pModifiers</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">LPBYTE&#160;</td>
          <td class="paramname"><em>afKeyState</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="a00929_source.html">xlate.c</a> 第 <a class="el" href="a00929_source.html#l00026">26</a> 行定义.</p>
<div class="fragment"><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;{</div>
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;    <a class="code" href="a02097.html">PVK_TO_BIT</a> pVkToBit = pModifiers-&gt;<a class="code" href="a02101.html#a71b44d3921c7f1ead4fac99b5cdc9734">pVkToBit</a>;</div>
<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;    WORD wModBits = 0;</div>
<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160; </div>
<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    <span class="keywordflow">while</span> (pVkToBit-&gt;<a class="code" href="a02097.html#af5990335d7d5c046b0a21a04ab0a2969">Vk</a>) {</div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;        <span class="keywordflow">if</span> (TestKeyDownBit(afKeyState, pVkToBit-&gt;<a class="code" href="a02097.html#af5990335d7d5c046b0a21a04ab0a2969">Vk</a>)) {</div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;            wModBits |= pVkToBit-&gt;<a class="code" href="a02097.html#a9be95dce93b92df765cf2d24023d1e81">ModBits</a>;</div>
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;        }</div>
<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;        pVkToBit++;</div>
<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;    }</div>
<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;    <span class="keywordflow">return</span> wModBits;</div>
<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;}</div>
</div><!-- fragment -->
<p class="reference">引用了 <a class="el" href="a00347_source.html#l00264">VK_TO_BIT::ModBits</a>, <a class="el" href="a00347_source.html#l00300">MODIFIERS::pVkToBit</a> , 以及 <a class="el" href="a00347_source.html#l00263">VK_TO_BIT::Vk</a>.</p>

<p class="reference">被这些函数引用 <a class="el" href="a00893_source.html#l00089">InternalToUnicodeEx()</a> , 以及 <a class="el" href="a00929_source.html#l00070">VKFromVSC()</a>.</p>

</div>
</div>
<a id="ae865573ac8481a37774e67cde256284e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae865573ac8481a37774e67cde256284e">&#9670;&nbsp;</a></span>InternalMapVirtualKeyEx()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a> InternalMapVirtualKeyEx </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a>&#160;</td>
          <td class="paramname"><em>wCode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a>&#160;</td>
          <td class="paramname"><em>wType</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00347.html#a6e6030f7dc50fba8bffa4e89f9328c85">PKBDTABLES</a>&#160;</td>
          <td class="paramname"><em>pKbdTbl</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="a00929_source.html">xlate.c</a> 第 <a class="el" href="a00929_source.html#l00216">216</a> 行定义.</p>
<div class="fragment"><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;{</div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;    PVK_TO_WCHARS1 pVK;</div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;    <a class="code" href="a00347.html#aaf228541d7b24869ed9dd8b1eabec2b2">PVK_TO_WCHAR_TABLE</a> pVKT;</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;    <a class="code" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a> VkRet = 0;</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;    USHORT usScanCode;</div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;    <a class="code" href="a02105.html">PVSC_VK</a> pVscVk;</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;    PBYTE pVkNumpad;</div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160; </div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    <span class="keywordflow">switch</span> (wType) {</div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    <span class="keywordflow">case</span> 0:</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160; </div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;<span class="comment">         * Convert Virtual Key (wCode) to Scan Code</span></div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;        <span class="keywordflow">if</span> ((wCode &gt;= VK_SHIFT) &amp;&amp; (wCode &lt;= VK_MENU)) {</div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160; </div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;<span class="comment">             * Convert ambiguous Shift/Control/Alt keys to left-hand keys</span></div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;            wCode = (<a class="code" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a>)((wCode - VK_SHIFT) * 2 + VK_LSHIFT);</div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;        }</div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160; </div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;<span class="comment">         * Scan through the table that maps Virtual Scancodes to Virtual Keys</span></div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;<span class="comment">         * for non-extended keys.</span></div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;        <span class="keywordflow">for</span> (usScanCode = 0; usScanCode &lt; pKbdTbl-&gt;<a class="code" href="a02121.html#a1f1a40720e05db154052bbc6875593e9">bMaxVSCtoVK</a>; usScanCode++) {</div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;            <span class="keywordflow">if</span> ((<a class="code" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a>)LOBYTE(pKbdTbl-&gt;<a class="code" href="a02121.html#a4e430c53a38fd0a442df3cb47bd46c7e">pusVSCtoVK</a>[usScanCode]) == wCode) {</div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;                <span class="keywordflow">return</span> usScanCode &amp; 0xFF;</div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;            }</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;        }</div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160; </div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;<span class="comment">         * Scan through the table that maps Virtual Scancodes to Virtual Keys</span></div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;<span class="comment">         * for extended keys.</span></div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;        <span class="keywordflow">for</span> (pVscVk = pKbdTbl-&gt;<a class="code" href="a02121.html#a8847a55cd61ad14f67ab7059678b16e8">pVSCtoVK_E0</a>; pVscVk-&gt;<a class="code" href="a02105.html#a61588284b96688c3e427aa8486637e23">Vk</a>; pVscVk++) {</div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;            <span class="keywordflow">if</span> ((<a class="code" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a>)LOBYTE(pVscVk-&gt;<a class="code" href="a02105.html#a61588284b96688c3e427aa8486637e23">Vk</a>) == wCode) {</div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;                <span class="keywordflow">return</span> (<a class="code" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a>)pVscVk-&gt;<a class="code" href="a02105.html#ad71d8dcef9aa40b80f5e4bd32f1dbe65">Vsc</a>;</div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;            }</div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;        }</div>
<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160; </div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;<span class="comment">         * There was no match: maybe the Virtual Key can only be generated</span></div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;<span class="comment">         * with Numlock on. Scan through aVkNumpad[] to determine scancode.</span></div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;        <span class="keywordflow">for</span> (pVkNumpad = <a class="code" href="a00347.html#aaebdbb479bebc544e795f7523553cfe9">aVkNumpad</a>; *pVkNumpad != 0; pVkNumpad++) {</div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;            <span class="keywordflow">if</span> ((<a class="code" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a>)(*pVkNumpad) == wCode) {</div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;                <span class="keywordflow">return</span> pVkNumpad - <a class="code" href="a00347.html#aaebdbb479bebc544e795f7523553cfe9">aVkNumpad</a> + <a class="code" href="a00347.html#aae5b70b46d04d5f37c1316575061f199">SCANCODE_NUMPAD_FIRST</a>;</div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;            }</div>
<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;        }</div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160; </div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;        <span class="keywordflow">return</span> 0;   <span class="comment">// No match found!</span></div>
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160; </div>
<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;    <span class="keywordflow">case</span> 1:</div>
<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;    <span class="keywordflow">case</span> 3:</div>
<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160; </div>
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;<span class="comment">         * Convert Scan Code (wCode) to Virtual Key, disregarding modifier keys</span></div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;<span class="comment">         * and NumLock key etc.  Returns 0 for no corresponding Virtual Key</span></div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;        <span class="keywordflow">if</span> (wCode &lt; (<a class="code" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a>)(pKbdTbl-&gt;<a class="code" href="a02121.html#a1f1a40720e05db154052bbc6875593e9">bMaxVSCtoVK</a>)) {</div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;            VkRet = (<a class="code" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a>)LOBYTE(pKbdTbl-&gt;<a class="code" href="a02121.html#a4e430c53a38fd0a442df3cb47bd46c7e">pusVSCtoVK</a>[wCode]);</div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;        } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;<span class="comment">             * Scan the E0 prefix table for a match</span></div>
<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;            <span class="keywordflow">for</span> (pVscVk = pKbdTbl-&gt;<a class="code" href="a02121.html#a8847a55cd61ad14f67ab7059678b16e8">pVSCtoVK_E0</a>; pVscVk-&gt;<a class="code" href="a02105.html#a61588284b96688c3e427aa8486637e23">Vk</a>; pVscVk++) {</div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;                <span class="keywordflow">if</span> ((<a class="code" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a>)pVscVk-&gt;<a class="code" href="a02105.html#ad71d8dcef9aa40b80f5e4bd32f1dbe65">Vsc</a> == wCode) {</div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;                    VkRet = (<a class="code" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a>)LOBYTE(pVscVk-&gt;<a class="code" href="a02105.html#a61588284b96688c3e427aa8486637e23">Vk</a>);</div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;                    <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;                }</div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;            }</div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;        }</div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160; </div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;        <span class="keywordflow">if</span> ((wType == 1) &amp;&amp; (VkRet &gt;= VK_LSHIFT) &amp;&amp; (VkRet &lt;= VK_RMENU)) {</div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160; </div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;<span class="comment">             * Convert left/right Shift/Control/Alt keys to ambiguous keys</span></div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;<span class="comment">             * (neither left nor right)</span></div>
<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;            VkRet = (<a class="code" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a>)((VkRet - VK_LSHIFT) / 2 + VK_SHIFT);</div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;        }</div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160; </div>
<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;        <span class="keywordflow">if</span> (VkRet == 0xFF) {</div>
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;            VkRet = 0;</div>
<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;        }</div>
<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;        <span class="keywordflow">return</span> VkRet;</div>
<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160; </div>
<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;    <span class="keywordflow">case</span> 2:</div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160; </div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;<span class="comment">         * Bogus Win3.1 functionality: despite SDK documenation, return uppercase for</span></div>
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;<span class="comment">         * VK_A through VK_Z</span></div>
<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;        <span class="keywordflow">if</span> ((wCode &gt;= (WORD)<span class="charliteral">&#39;A&#39;</span>) &amp;&amp; (wCode &lt;= (WORD)<span class="charliteral">&#39;Z&#39;</span>)) {</div>
<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;            <span class="keywordflow">return</span> wCode;</div>
<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;        }</div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160; </div>
<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;<span class="comment">         * Convert Virtual Key (wCode) to ANSI.</span></div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;<span class="comment">         * Search each Shift-state table in turn, looking for the Virtual Key.</span></div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;        <span class="keywordflow">for</span> (pVKT = pKbdTbl-&gt;<a class="code" href="a02121.html#ac5909a7f312515eda610982d7a08fce4">pVkToWcharTable</a>; pVKT-&gt;pVkToWchars != NULL; pVKT++) {</div>
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;            pVK = pVKT-&gt;pVkToWchars;</div>
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;            <span class="keywordflow">while</span> (pVK-&gt;VirtualKey != 0) {</div>
<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;                <span class="keywordflow">if</span> ((<a class="code" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a>)pVK-&gt;VirtualKey == wCode) {</div>
<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160; </div>
<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;                    <span class="comment">/*</span></div>
<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;<span class="comment">                     * Match found: return the unshifted character</span></div>
<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;<span class="comment">                     */</span></div>
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;                    <span class="keywordflow">if</span> (pVK-&gt;wch[0] == <a class="code" href="a00347.html#a09c48af898da6cda51a13d630df6fb54">WCH_DEAD</a>) {</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160; </div>
<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;                        <span class="comment">/*</span></div>
<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;<span class="comment">                         * It is a dead character: the next entry contains its</span></div>
<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;<span class="comment">                         * value.  Set the high bit to indicate dead key</span></div>
<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;<span class="comment">                         * (undocumented behaviour)</span></div>
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;<span class="comment">                         */</span></div>
<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;                        pVK = (PVK_TO_WCHARS1)((PBYTE)pVK + pVKT-&gt;cbSize);</div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;                        <span class="keywordflow">return</span> pVK-&gt;wch[0] | (<a class="code" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a>)0x80000000;</div>
<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;                    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pVK-&gt;wch[0] == <a class="code" href="a00347.html#a7b07b0b4fc7c369d91663fd8c1f1dd34">WCH_NONE</a>) {</div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;                        <span class="keywordflow">return</span> 0; <span class="comment">// 9013</span></div>
<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;                    }</div>
<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;                    <span class="keywordflow">if</span> (pVK-&gt;wch[0] == <a class="code" href="a00347.html#a7b07b0b4fc7c369d91663fd8c1f1dd34">WCH_NONE</a>) {</div>
<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;                        <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;                    }</div>
<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;                    <span class="keywordflow">return</span> pVK-&gt;wch[0];</div>
<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;                }</div>
<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;                pVK = (PVK_TO_WCHARS1)((PBYTE)pVK + pVKT-&gt;cbSize);</div>
<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;            }</div>
<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;        }</div>
<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;    }</div>
<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160; </div>
<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;<span class="comment">     * Can&#39;t find translation, or wType was invalid</span></div>
<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;    <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;}</div>
</div><!-- fragment -->
<p class="reference">引用了 <a class="el" href="a00722_source.html#l00030">aVkNumpad</a>, <a class="el" href="a00347_source.html#l00491">tagKbdLayer::bMaxVSCtoVK</a>, <a class="el" href="a00347_source.html#l00490">tagKbdLayer::pusVSCtoVK</a>, <a class="el" href="a00347_source.html#l00424">PVK_TO_WCHAR_TABLE</a>, <a class="el" href="a00347_source.html#l00473">tagKbdLayer::pVkToWcharTable</a>, <a class="el" href="a00347_source.html#l00492">tagKbdLayer::pVSCtoVK_E0</a>, <a class="el" href="a00347_source.html#l00742">SCANCODE_NUMPAD_FIRST</a>, <a class="el" href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT()</a>, <a class="el" href="a00347_source.html#l00333">_VSC_VK::Vk</a>, <a class="el" href="a00347_source.html#l00332">_VSC_VK::Vsc</a>, <a class="el" href="a00347_source.html#l00372">WCH_DEAD</a> , 以及 <a class="el" href="a00347_source.html#l00371">WCH_NONE</a>.</p>

<p class="reference">被这些函数引用 <a class="el" href="a00929_source.html#l00384">_GetKeyNameText()</a> , 以及 <a class="el" href="a03614_source.html#l07222">NtUserMapVirtualKeyEx()</a>.</p>

</div>
</div>
<a id="a297b777a39ee6e6597a4b787a207c5bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a297b777a39ee6e6597a4b787a207c5bd">&#9670;&nbsp;</a></span>KELocaleProcs()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">BOOL KELocaleProcs </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00347.html#a770ffbf7854eca4db8f1f01340bfe19d">PKE</a>&#160;</td>
          <td class="paramname"><em>pKe</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="a00929_source.html">xlate.c</a> 第 <a class="el" href="a00929_source.html#l00566">566</a> 行定义.</p>
<div class="fragment"><div class="line"><a name="l00567"></a><span class="lineno">  567</span>&#160;{</div>
<div class="line"><a name="l00568"></a><span class="lineno">  568</span>&#160;    CheckCritIn();</div>
<div class="line"><a name="l00569"></a><span class="lineno">  569</span>&#160; </div>
<div class="line"><a name="l00570"></a><span class="lineno">  570</span>&#160;    <span class="keywordflow">if</span> ((<a class="code" href="a03257.html#a5daad6b409940cfa583bc008f643112c">gpKbdTbl</a>-&gt;<a class="code" href="a02121.html#aabdd1764dfab7e2dfba2bbbe901266ec">fLocaleFlags</a> &amp; <a class="code" href="a00347.html#acf2af6af829e08806d9d90517f16c168">KLLF_ALTGR</a>) || <a class="code" href="a00929.html#ad584d240c6587fb7fa7c79d3d12cb42d">gbAltGrDown</a>) {</div>
<div class="line"><a name="l00571"></a><span class="lineno">  571</span>&#160;        <span class="keywordflow">if</span> (!<a class="code" href="a00929.html#a4002aab46f9ea99ed4c9eed3c233e687">AltGr</a>(pKe)) {</div>
<div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;            <span class="keywordflow">return</span> FALSE;</div>
<div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;        }</div>
<div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;    }</div>
<div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160; </div>
<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;<span class="comment">     * Other special Key Event processors</span></div>
<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160; </div>
<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160;    <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;}</div>
</div><!-- fragment -->
<p class="reference">引用了 <a class="el" href="a00929_source.html#l00497">AltGr()</a>, <a class="el" href="a00347_source.html#l00498">tagKbdLayer::fLocaleFlags</a>, <a class="el" href="a00929_source.html#l00495">gbAltGrDown</a>, <a class="el" href="a03257_source.html#l00235">gpKbdTbl</a> , 以及 <a class="el" href="a00347_source.html#l00452">KLLF_ALTGR</a>.</p>

<p class="reference">被这些函数引用 <a class="el" href="a00809_source.html#l01532">ProcessKeyEvent()</a>.</p>

</div>
</div>
<a id="a18c318c4bfc48c573fc43f9ece4d457c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a18c318c4bfc48c573fc43f9ece4d457c">&#9670;&nbsp;</a></span>KEOEMProcs()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">BOOL KEOEMProcs </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00347.html#a770ffbf7854eca4db8f1f01340bfe19d">PKE</a>&#160;</td>
          <td class="paramname"><em>pKe</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="a00929_source.html">xlate.c</a> 第 <a class="el" href="a00929_source.html#l00539">539</a> 行定义.</p>
<div class="fragment"><div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;{</div>
<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;    <span class="keywordtype">int</span> i;</div>
<div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160; </div>
<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;    CheckCritIn();</div>
<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160; </div>
<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;    <span class="keywordflow">for</span> (i = 0; <a class="code" href="a00347.html#aefbc9af4aee1f3134baf912e8ed01a35">aKEProcOEM</a>[i] != NULL; i++) {</div>
<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;        <span class="keywordflow">if</span> (!<a class="code" href="a00347.html#aefbc9af4aee1f3134baf912e8ed01a35">aKEProcOEM</a>[i](pKe)) {</div>
<div class="line"><a name="l00547"></a><span class="lineno">  547</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l00548"></a><span class="lineno">  548</span>&#160;<span class="comment">             * Eat the key event</span></div>
<div class="line"><a name="l00549"></a><span class="lineno">  549</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l00550"></a><span class="lineno">  550</span>&#160;            <span class="keywordflow">return</span> FALSE;</div>
<div class="line"><a name="l00551"></a><span class="lineno">  551</span>&#160;        }</div>
<div class="line"><a name="l00552"></a><span class="lineno">  552</span>&#160;    }</div>
<div class="line"><a name="l00553"></a><span class="lineno">  553</span>&#160; </div>
<div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;<span class="comment">     * Pass the (possibly altered) key event on.</span></div>
<div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;    <span class="keywordflow">return</span> TRUE;</div>
<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;}</div>
</div><!-- fragment -->
<p class="reference">引用了 <a class="el" href="a00722_source.html#l00305">aKEProcOEM</a>.</p>

<p class="reference">被这些函数引用 <a class="el" href="a00809_source.html#l01532">ProcessKeyEvent()</a>.</p>

</div>
</div>
<a id="a9a0394f6aa879a10c4525b3c11157299"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9a0394f6aa879a10c4525b3c11157299">&#9670;&nbsp;</a></span>VKFromVSC()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">BYTE VKFromVSC </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00347.html#a770ffbf7854eca4db8f1f01340bfe19d">PKE</a>&#160;</td>
          <td class="paramname"><em>pke</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">BYTE&#160;</td>
          <td class="paramname"><em>bPrefix</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">LPBYTE&#160;</td>
          <td class="paramname"><em>afKeyState</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="a00929_source.html">xlate.c</a> 第 <a class="el" href="a00929_source.html#l00070">70</a> 行定义.</p>
<div class="fragment"><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;{</div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;    USHORT usVKey = 0xFF;</div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;    <a class="code" href="a02105.html">PVSC_VK</a> pVscVk;</div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;    <a class="code" href="a02121.html">PKBDTABLES</a> pKbdTbl;</div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;    <span class="keyword">static</span> BOOL fVkPause;</div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="preprocessor">#ifdef FE_IME // For Korea 103 keyboard</span></div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;    <span class="keyword">extern</span> USHORT gPrimaryLangID;</div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160; </div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    DBG_UNREFERENCED_PARAMETER(afKeyState);</div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160; </div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;    <span class="keywordflow">if</span> (pke-&gt;<a class="code" href="a02093.html#a7d8f7465b5c110b12d8c1805828a6e43">bScanCode</a> == 0xFF) {</div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;<span class="comment">         * Kbd overrun (kbd hardware and/or keyboard driver) : Beep!</span></div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<span class="comment">         * (some DELL keyboards send 0xFF if keys are hit hard enough,</span></div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;<span class="comment">         * presumably due to keybounce)</span></div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;        <a class="code" href="a03605.html#a4f1ae6130c5b61d08ef3cb8156d87333">xxxMessageBeep</a>(0);</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;        <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;    }</div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160; </div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;<span class="preprocessor">#ifdef FE_IME // For Korea 103 keyboard</span></div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    <span class="keywordflow">if</span> (gPrimaryLangID == LANG_KOREAN &amp;&amp; (pke-&gt;<a class="code" href="a02093.html#a7d8f7465b5c110b12d8c1805828a6e43">bScanCode</a>==0x71 || pke-&gt;<a class="code" href="a02093.html#a7d8f7465b5c110b12d8c1805828a6e43">bScanCode</a>==0x72)) {</div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;        pke-&gt;<a class="code" href="a02093.html#a7d8f7465b5c110b12d8c1805828a6e43">bScanCode</a> |= 0x80;</div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;        bPrefix = 0xE0;</div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    }</div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <span class="keywordflow">else</span></div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    pke-&gt;<a class="code" href="a02093.html#a7d8f7465b5c110b12d8c1805828a6e43">bScanCode</a> &amp;= 0x7F;</div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160; </div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="a03257.html#a72d6c69b0eefb30311d982761970b971">gptiForeground</a> == NULL) {</div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;        <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#ad6b24a3d61abdc148c8751b5c5add686">RIP_VERBOSE</a>, <span class="stringliteral">&quot;VKFromVSC: NULL gptiForeground\n&quot;</span>);</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;        pKbdTbl = <a class="code" href="a03257.html#a5daad6b409940cfa583bc008f643112c">gpKbdTbl</a>;</div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;        <span class="keywordflow">if</span> (<a class="code" href="a03257.html#a72d6c69b0eefb30311d982761970b971">gptiForeground</a>-&gt;<a class="code" href="a02889.html#a09237cbbe78ba3aebf853599bced5ac8">spklActive</a>) {</div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;            pKbdTbl = <a class="code" href="a03257.html#a72d6c69b0eefb30311d982761970b971">gptiForeground</a>-&gt;<a class="code" href="a02889.html#a09237cbbe78ba3aebf853599bced5ac8">spklActive</a>-&gt;<a class="code" href="a02793.html#a920717ffed3d170bbe0f357ad65985ef">spkf</a>-&gt;<a class="code" href="a02789.html#ac8cf048dc524a9e172bd89087361f74a">pKbdTbl</a>;</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;        } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;            <a class="code" href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a>(<a class="code" href="a00371.html#ad6b24a3d61abdc148c8751b5c5add686">RIP_VERBOSE</a>, <span class="stringliteral">&quot;VKFromVSC: NULL spklActive\n&quot;</span>);</div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;            pKbdTbl = <a class="code" href="a03257.html#a5daad6b409940cfa583bc008f643112c">gpKbdTbl</a>;</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;        }</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    }</div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="keywordflow">if</span> (bPrefix == 0) {</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        <span class="keywordflow">if</span> (pke-&gt;<a class="code" href="a02093.html#a7d8f7465b5c110b12d8c1805828a6e43">bScanCode</a> &lt; pKbdTbl-&gt;<a class="code" href="a02121.html#a1f1a40720e05db154052bbc6875593e9">bMaxVSCtoVK</a>) {</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;<span class="comment">             * direct index into non-prefix table</span></div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;            usVKey = pKbdTbl-&gt;<a class="code" href="a02121.html#a4e430c53a38fd0a442df3cb47bd46c7e">pusVSCtoVK</a>[pke-&gt;<a class="code" href="a02093.html#a7d8f7465b5c110b12d8c1805828a6e43">bScanCode</a>];</div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;            <span class="keywordflow">if</span> (usVKey == 0) {</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;                <span class="keywordflow">return</span> 0xFF;</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;            }</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;        } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;<span class="comment">             * unexpected scancode</span></div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;            <a class="code" href="a00371.html#a906cb0845450a5d5422ce513ecd8a32f">RIPMSG2</a>(<a class="code" href="a00371.html#ad6b24a3d61abdc148c8751b5c5add686">RIP_VERBOSE</a>, <span class="stringliteral">&quot;unrecognized scancode 0x%x, prefix %x&quot;</span>,</div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;                    pke-&gt;<a class="code" href="a02093.html#a7d8f7465b5c110b12d8c1805828a6e43">bScanCode</a>, bPrefix);</div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;            <span class="keywordflow">return</span> 0xFF;</div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;        }</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="comment">         * Scan the E0 or E1 prefix table for a match</span></div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;        <span class="keywordflow">if</span> (bPrefix == 0xE0) {</div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;            <span class="comment">/*</span></div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;<span class="comment">             * Ignore the SHIFT keystrokes generated by the hardware</span></div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;<span class="comment">             */</span></div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;            <span class="keywordflow">if</span> ((pke-&gt;<a class="code" href="a02093.html#a7d8f7465b5c110b12d8c1805828a6e43">bScanCode</a> == <a class="code" href="a00347.html#a1864e1b6cee782fe2ffccbe32664b5d2">SCANCODE_LSHIFT</a>) ||</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;                    (pke-&gt;<a class="code" href="a02093.html#a7d8f7465b5c110b12d8c1805828a6e43">bScanCode</a> == <a class="code" href="a00347.html#ac43632f7ef43d23e60fba8fd3dc4c283">SCANCODE_RSHIFT</a>)) {</div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;                <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;            }</div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;            pVscVk = pKbdTbl-&gt;<a class="code" href="a02121.html#a8847a55cd61ad14f67ab7059678b16e8">pVSCtoVK_E0</a>;</div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;        } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bPrefix == 0xE1) {</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;            pVscVk = pKbdTbl-&gt;<a class="code" href="a02121.html#a54bb31ee7c451644c4800f1605cf25cd">pVSCtoVK_E1</a>;</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;        }</div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;        <span class="keywordflow">while</span> (pVscVk-&gt;<a class="code" href="a02105.html#a61588284b96688c3e427aa8486637e23">Vk</a>) {</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;            <span class="keywordflow">if</span> (pVscVk-&gt;<a class="code" href="a02105.html#ad71d8dcef9aa40b80f5e4bd32f1dbe65">Vsc</a> == pke-&gt;<a class="code" href="a02093.html#a7d8f7465b5c110b12d8c1805828a6e43">bScanCode</a>) {</div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;                usVKey = pVscVk-&gt;<a class="code" href="a02105.html#a61588284b96688c3e427aa8486637e23">Vk</a>;</div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;                <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;            }</div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;            pVscVk++;</div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;        }</div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    }</div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160; </div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;<span class="comment">     * Scancode set 1 returns PAUSE button as E1 1D 45 (E1 Ctrl NumLock)</span></div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;<span class="comment">     * so convert E1 Ctrl to VK_PAUSE, and remember to discard the NumLock</span></div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;    <span class="keywordflow">if</span> (fVkPause) {</div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<span class="comment">         * This is the &quot;45&quot; part of the Pause scancode sequence.</span></div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;<span class="comment">         * Discard this key event: it is a false NumLock</span></div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;        fVkPause = FALSE;</div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;        <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;    }</div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    <span class="keywordflow">if</span> (usVKey == VK_PAUSE) {</div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;<span class="comment">         * This is the &quot;E1 1D&quot; part of the Pause scancode sequence.</span></div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;<span class="comment">         * Alter the scancode to the value Windows expects for Pause,</span></div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;<span class="comment">         * and remember to discard the &quot;45&quot; scancode that will follow</span></div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;        pke-&gt;<a class="code" href="a02093.html#a7d8f7465b5c110b12d8c1805828a6e43">bScanCode</a> = 0x45;</div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;        fVkPause = TRUE;</div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;    }</div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160; </div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    <span class="comment">/*</span></div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;<span class="comment">     * Convert to a different VK if some modifier keys are depressed.</span></div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;<span class="comment">     */</span></div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;    <span class="keywordflow">if</span> (usVKey &amp; <a class="code" href="a00347.html#afd226aa21c810537192d676568ac5e9e">KBDMULTIVK</a>) {</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;        WORD nMod;</div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;        PULONG pul;</div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160; </div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;        nMod = <a class="code" href="a00929.html#a92510e600b434cb284d0a1bc06bffd9f">GetModificationNumber</a>(</div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;                   &amp;<a class="code" href="a00347.html#ab227169400ca30658051902be31c4afd">Modifiers_VK</a>,</div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;                   <a class="code" href="a00929.html#a82da6132abc06de6bfe434eaedafa5bd">GetModifierBits</a>(&amp;<a class="code" href="a00347.html#ab227169400ca30658051902be31c4afd">Modifiers_VK</a>, <a class="code" href="a03257.html#a2f3efd1c8f99c7f561e46a5743aecbee">gafPhysKeyState</a>));</div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160; </div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;        <span class="comment">/*</span></div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;<span class="comment">         * Scan gapulCvt_VK[nMod] for matching VK.</span></div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;<span class="comment">         */</span></div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;        <span class="keywordflow">if</span> ((nMod != <a class="code" href="a00347.html#ab3a973fcee8c98e5b9f715808a3775c3">SHFT_INVALID</a>) &amp;&amp; ((pul = <a class="code" href="a00347.html#a29061e7f1dbc13f5bbd8ec075bde8efc">gapulCvt_VK</a>[nMod]) != NULL)) {</div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;            <span class="keywordflow">while</span> (*pul != 0) {</div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;                <span class="keywordflow">if</span> (LOBYTE(*pul) == LOBYTE(usVKey)) {</div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;                    pke-&gt;<a class="code" href="a02093.html#a0e92b451e0b34fd1dc8d8bb2874e63bb">usFlaggedVk</a> = (USHORT)HIWORD(*pul);</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;                    <span class="keywordflow">return</span> (BYTE)pke-&gt;<a class="code" href="a02093.html#a0e92b451e0b34fd1dc8d8bb2874e63bb">usFlaggedVk</a>;</div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;                }</div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;                pul++;</div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;            }</div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;        }</div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    }</div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160; </div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;    pke-&gt;<a class="code" href="a02093.html#a0e92b451e0b34fd1dc8d8bb2874e63bb">usFlaggedVk</a> = usVKey;</div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;    <span class="keywordflow">return</span> (BYTE)usVKey;</div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;}</div>
</div><!-- fragment -->
<p class="reference">引用了 <a class="el" href="a00347_source.html#l00491">tagKbdLayer::bMaxVSCtoVK</a>, <a class="el" href="a00347_source.html#l00029">tagKE::bScanCode</a>, <a class="el" href="a03257_source.html#l00253">gafPhysKeyState</a>, <a class="el" href="a00722_source.html#l00120">gapulCvt_VK</a>, <a class="el" href="a00929_source.html#l00045">GetModificationNumber()</a>, <a class="el" href="a00929_source.html#l00026">GetModifierBits()</a>, <a class="el" href="a03257_source.html#l00235">gpKbdTbl</a>, <a class="el" href="a03257_source.html#l00131">gptiForeground</a>, <a class="el" href="a00347_source.html#l00039">KBDMULTIVK</a>, <a class="el" href="a00722_source.html#l00089">Modifiers_VK</a>, <a class="el" href="a00899_source.html#l01643">tagKBDFILE::pKbdTbl</a>, <a class="el" href="a00347_source.html#l00490">tagKbdLayer::pusVSCtoVK</a>, <a class="el" href="a00347_source.html#l00492">tagKbdLayer::pVSCtoVK_E0</a>, <a class="el" href="a00347_source.html#l00493">tagKbdLayer::pVSCtoVK_E1</a>, <a class="el" href="a00371_source.html#l00030">RIP_VERBOSE</a>, <a class="el" href="a00371_source.html#l00131">RIPMSG0</a>, <a class="el" href="a00371_source.html#l00133">RIPMSG2</a>, <a class="el" href="a00347_source.html#l00738">SCANCODE_LSHIFT</a>, <a class="el" href="a00347_source.html#l00739">SCANCODE_RSHIFT</a>, <a class="el" href="a00347_source.html#l00308">SHFT_INVALID</a>, <a class="el" href="a00899_source.html#l01655">tagKL::spkf</a>, <a class="el" href="a00899_source.html#l02275">tagTHREADINFO::spklActive</a>, <a class="el" href="a00347_source.html#l00030">tagKE::usFlaggedVk</a>, <a class="el" href="a00347_source.html#l00333">_VSC_VK::Vk</a>, <a class="el" href="a00347_source.html#l00332">_VSC_VK::Vsc</a> , 以及 <a class="el" href="a03605_source.html#l00067">xxxMessageBeep()</a>.</p>

<p class="reference">被这些函数引用 <a class="el" href="a00809_source.html#l01449">KeyboardApcProcedure()</a>.</p>

</div>
</div>
<h2 class="groupheader">变量说明</h2>
<a id="ad584d240c6587fb7fa7c79d3d12cb42d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad584d240c6587fb7fa7c79d3d12cb42d">&#9670;&nbsp;</a></span>gbAltGrDown</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">BOOL gbAltGrDown = FALSE</td>
        </tr>
      </table>
</div><div class="memdoc">

<p class="definition">在文件 <a class="el" href="a00929_source.html">xlate.c</a> 第 <a class="el" href="a00929_source.html#l00495">495</a> 行定义.</p>

<p class="reference">被这些函数引用 <a class="el" href="a00929_source.html#l00497">AltGr()</a> , 以及 <a class="el" href="a00929_source.html#l00566">KELocaleProcs()</a>.</p>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div class="ttc" id="aa00347_html_a02d6166547fcefe9036ce166733fb86c"><div class="ttname"><a href="a00347.html#a02d6166547fcefe9036ce166733fb86c">DONTCARE_BIT</a></div><div class="ttdeci">#define DONTCARE_BIT</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00048">kbd.h:48</a></div></div>
<div class="ttc" id="aa00371_html_a01c4659626880ba56745765a3580a36b"><div class="ttname"><a href="a00371.html#a01c4659626880ba56745765a3580a36b">RIPMSG0</a></div><div class="ttdeci">#define RIPMSG0(flags, szFmt)</div><div class="ttdef"><b>Definition:</b> <a href="a00371_source.html#l00131">winerrp.h:131</a></div></div>
<div class="ttc" id="aa00347_html_ab227169400ca30658051902be31c4afd"><div class="ttname"><a href="a00347.html#ab227169400ca30658051902be31c4afd">Modifiers_VK</a></div><div class="ttdeci">MODIFIERS Modifiers_VK</div><div class="ttdef"><b>Definition:</b> <a href="a00722_source.html#l00089">kbd.c:89</a></div></div>
<div class="ttc" id="aa02121_html_aabdd1764dfab7e2dfba2bbbe901266ec"><div class="ttname"><a href="a02121.html#aabdd1764dfab7e2dfba2bbbe901266ec">tagKbdLayer::fLocaleFlags</a></div><div class="ttdeci">DWORD fLocaleFlags</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00498">kbd.h:498</a></div></div>
<div class="ttc" id="aa00347_html_afd226aa21c810537192d676568ac5e9e"><div class="ttname"><a href="a00347.html#afd226aa21c810537192d676568ac5e9e">KBDMULTIVK</a></div><div class="ttdeci">#define KBDMULTIVK</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00039">kbd.h:39</a></div></div>
<div class="ttc" id="aa02093_html_a0e92b451e0b34fd1dc8d8bb2874e63bb"><div class="ttname"><a href="a02093.html#a0e92b451e0b34fd1dc8d8bb2874e63bb">tagKE::usFlaggedVk</a></div><div class="ttdeci">USHORT usFlaggedVk</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00030">kbd.h:30</a></div></div>
<div class="ttc" id="aa02101_html_af0eb9068596da775c7db65526bc8538c"><div class="ttname"><a href="a02101.html#af0eb9068596da775c7db65526bc8538c">MODIFIERS::wMaxModBits</a></div><div class="ttdeci">WORD wMaxModBits</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00301">kbd.h:301</a></div></div>
<div class="ttc" id="aa02121_html"><div class="ttname"><a href="a02121.html">tagKbdLayer</a></div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00464">kbd.h:464</a></div></div>
<div class="ttc" id="aa03257_html_a2f3efd1c8f99c7f561e46a5743aecbee"><div class="ttname"><a href="a03257.html#a2f3efd1c8f99c7f561e46a5743aecbee">gafPhysKeyState</a></div><div class="ttdeci">BYTE gafPhysKeyState[CBKEYSTATE]</div><div class="ttdef"><b>Definition:</b> <a href="a03257_source.html#l00253">kernel/globals.c:253</a></div></div>
<div class="ttc" id="aa02121_html_a4e430c53a38fd0a442df3cb47bd46c7e"><div class="ttname"><a href="a02121.html#a4e430c53a38fd0a442df3cb47bd46c7e">tagKbdLayer::pusVSCtoVK</a></div><div class="ttdeci">USHORT * pusVSCtoVK</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00490">kbd.h:490</a></div></div>
<div class="ttc" id="aa02121_html_a54fa7ee0c101a45ebf04e6d97e48bc2a"><div class="ttname"><a href="a02121.html#a54fa7ee0c101a45ebf04e6d97e48bc2a">tagKbdLayer::pKeyNamesDead</a></div><div class="ttdeci">LPWSTR * pKeyNamesDead</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00485">kbd.h:485</a></div></div>
<div class="ttc" id="aa02121_html_a1f1a40720e05db154052bbc6875593e9"><div class="ttname"><a href="a02121.html#a1f1a40720e05db154052bbc6875593e9">tagKbdLayer::bMaxVSCtoVK</a></div><div class="ttdeci">BYTE bMaxVSCtoVK</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00491">kbd.h:491</a></div></div>
<div class="ttc" id="aa00929_html_a92510e600b434cb284d0a1bc06bffd9f"><div class="ttname"><a href="a00929.html#a92510e600b434cb284d0a1bc06bffd9f">GetModificationNumber</a></div><div class="ttdeci">WORD GetModificationNumber(PMODIFIERS pModifiers, WORD wModBits)</div><div class="ttdef"><b>Definition:</b> <a href="a00929_source.html#l00045">xlate.c:45</a></div></div>
<div class="ttc" id="aa03605_html_a4f1ae6130c5b61d08ef3cb8156d87333"><div class="ttname"><a href="a03605.html#a4f1ae6130c5b61d08ef3cb8156d87333">xxxMessageBeep</a></div><div class="ttdeci">BOOL xxxMessageBeep(UINT dwType)</div><div class="ttdef"><b>Definition:</b> <a href="a03605_source.html#l00067">kernel/msgbeep.c:67</a></div></div>
<div class="ttc" id="aa00371_html_ad6b24a3d61abdc148c8751b5c5add686"><div class="ttname"><a href="a00371.html#ad6b24a3d61abdc148c8751b5c5add686">RIP_VERBOSE</a></div><div class="ttdeci">#define RIP_VERBOSE</div><div class="ttdef"><b>Definition:</b> <a href="a00371_source.html#l00030">winerrp.h:30</a></div></div>
<div class="ttc" id="aa03257_html_a72d6c69b0eefb30311d982761970b971"><div class="ttname"><a href="a03257.html#a72d6c69b0eefb30311d982761970b971">gptiForeground</a></div><div class="ttdeci">PTHREADINFO gptiForeground</div><div class="ttdef"><b>Definition:</b> <a href="a03257_source.html#l00131">kernel/globals.c:131</a></div></div>
<div class="ttc" id="aa02097_html_a9be95dce93b92df765cf2d24023d1e81"><div class="ttname"><a href="a02097.html#a9be95dce93b92df765cf2d24023d1e81">VK_TO_BIT::ModBits</a></div><div class="ttdeci">BYTE ModBits</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00264">kbd.h:264</a></div></div>
<div class="ttc" id="aa02117_html_a6fdd61425d46bba71b27db8a56006cc8"><div class="ttname"><a href="a02117.html#a6fdd61425d46bba71b27db8a56006cc8">VSC_LPWSTR::vsc</a></div><div class="ttdeci">BYTE vsc</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00448">kbd.h:448</a></div></div>
<div class="ttc" id="aa00347_html_a1864e1b6cee782fe2ffccbe32664b5d2"><div class="ttname"><a href="a00347.html#a1864e1b6cee782fe2ffccbe32664b5d2">SCANCODE_LSHIFT</a></div><div class="ttdeci">#define SCANCODE_LSHIFT</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00738">kbd.h:738</a></div></div>
<div class="ttc" id="aa02105_html_a61588284b96688c3e427aa8486637e23"><div class="ttname"><a href="a02105.html#a61588284b96688c3e427aa8486637e23">_VSC_VK::Vk</a></div><div class="ttdeci">USHORT Vk</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00333">kbd.h:333</a></div></div>
<div class="ttc" id="aa00347_html_aef6d4c2cd65a5df2a46e8f8a471f27e1"><div class="ttname"><a href="a00347.html#aef6d4c2cd65a5df2a46e8f8a471f27e1">_KeyEvent</a></div><div class="ttdeci">VOID _KeyEvent(USHORT usVk, WORD wScanCode, DWORD ExtraInfo)</div></div>
<div class="ttc" id="aa02121_html_a942601a57170773f877df781f2a3aa51"><div class="ttname"><a href="a02121.html#a942601a57170773f877df781f2a3aa51">tagKbdLayer::pKeyNames</a></div><div class="ttdeci">VSC_LPWSTR * pKeyNames</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00483">kbd.h:483</a></div></div>
<div class="ttc" id="aa02101_html_a18c09f0ef060c4a5639afaed42c5af7d"><div class="ttname"><a href="a02101.html#a18c09f0ef060c4a5639afaed42c5af7d">MODIFIERS::ModNumber</a></div><div class="ttdeci">BYTE ModNumber[]</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00302">kbd.h:302</a></div></div>
<div class="ttc" id="aa00347_html_a7b07b0b4fc7c369d91663fd8c1f1dd34"><div class="ttname"><a href="a00347.html#a7b07b0b4fc7c369d91663fd8c1f1dd34">WCH_NONE</a></div><div class="ttdeci">#define WCH_NONE</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00371">kbd.h:371</a></div></div>
<div class="ttc" id="aa02105_html_ad71d8dcef9aa40b80f5e4bd32f1dbe65"><div class="ttname"><a href="a02105.html#ad71d8dcef9aa40b80f5e4bd32f1dbe65">_VSC_VK::Vsc</a></div><div class="ttdeci">BYTE Vsc</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00332">kbd.h:332</a></div></div>
<div class="ttc" id="aa03257_html_a5daad6b409940cfa583bc008f643112c"><div class="ttname"><a href="a03257.html#a5daad6b409940cfa583bc008f643112c">gpKbdTbl</a></div><div class="ttdeci">PKBDTABLES gpKbdTbl</div><div class="ttdef"><b>Definition:</b> <a href="a03257_source.html#l00235">kernel/globals.c:235</a></div></div>
<div class="ttc" id="aa00929_html_a82da6132abc06de6bfe434eaedafa5bd"><div class="ttname"><a href="a00929.html#a82da6132abc06de6bfe434eaedafa5bd">GetModifierBits</a></div><div class="ttdeci">WORD GetModifierBits(PMODIFIERS pModifiers, LPBYTE afKeyState)</div><div class="ttdef"><b>Definition:</b> <a href="a00929_source.html#l00026">xlate.c:26</a></div></div>
<div class="ttc" id="aa00929_html_a4002aab46f9ea99ed4c9eed3c233e687"><div class="ttname"><a href="a00929.html#a4002aab46f9ea99ed4c9eed3c233e687">AltGr</a></div><div class="ttdeci">AltGr(PKE pKe)</div><div class="ttdef"><b>Definition:</b> <a href="a00929_source.html#l00497">xlate.c:497</a></div></div>
<div class="ttc" id="aa02117_html"><div class="ttname"><a href="a02117.html">VSC_LPWSTR</a></div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00447">kbd.h:447</a></div></div>
<div class="ttc" id="aa00929_html_ae865573ac8481a37774e67cde256284e"><div class="ttname"><a href="a00929.html#ae865573ac8481a37774e67cde256284e">InternalMapVirtualKeyEx</a></div><div class="ttdeci">UINT InternalMapVirtualKeyEx(UINT wCode, UINT wType, PKBDTABLES pKbdTbl)</div><div class="ttdef"><b>Definition:</b> <a href="a00929_source.html#l00216">xlate.c:216</a></div></div>
<div class="ttc" id="aa00347_html_aaebdbb479bebc544e795f7523553cfe9"><div class="ttname"><a href="a00347.html#aaebdbb479bebc544e795f7523553cfe9">aVkNumpad</a></div><div class="ttdeci">BYTE aVkNumpad[]</div><div class="ttdef"><b>Definition:</b> <a href="a00722_source.html#l00030">kbd.c:30</a></div></div>
<div class="ttc" id="aa00347_html_a3f8652b528af17dd02ea4a604210defc"><div class="ttname"><a href="a00347.html#a3f8652b528af17dd02ea4a604210defc">KBDBREAK</a></div><div class="ttdeci">#define KBDBREAK</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00042">kbd.h:42</a></div></div>
<div class="ttc" id="aa00347_html_ab3a973fcee8c98e5b9f715808a3775c3"><div class="ttname"><a href="a00347.html#ab3a973fcee8c98e5b9f715808a3775c3">SHFT_INVALID</a></div><div class="ttdeci">#define SHFT_INVALID</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00308">kbd.h:308</a></div></div>
<div class="ttc" id="aa02121_html_ac5909a7f312515eda610982d7a08fce4"><div class="ttname"><a href="a02121.html#ac5909a7f312515eda610982d7a08fce4">tagKbdLayer::pVkToWcharTable</a></div><div class="ttdeci">VK_TO_WCHAR_TABLE * pVkToWcharTable</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00473">kbd.h:473</a></div></div>
<div class="ttc" id="aa00347_html_a09c48af898da6cda51a13d630df6fb54"><div class="ttname"><a href="a00347.html#a09c48af898da6cda51a13d630df6fb54">WCH_DEAD</a></div><div class="ttdeci">#define WCH_DEAD</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00372">kbd.h:372</a></div></div>
<div class="ttc" id="aa00347_html_aaf228541d7b24869ed9dd8b1eabec2b2"><div class="ttname"><a href="a00347.html#aaf228541d7b24869ed9dd8b1eabec2b2">PVK_TO_WCHAR_TABLE</a></div><div class="ttdeci">* PVK_TO_WCHAR_TABLE</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00424">kbd.h:424</a></div></div>
<div class="ttc" id="aa00347_html_ac43632f7ef43d23e60fba8fd3dc4c283"><div class="ttname"><a href="a00347.html#ac43632f7ef43d23e60fba8fd3dc4c283">SCANCODE_RSHIFT</a></div><div class="ttdeci">#define SCANCODE_RSHIFT</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00739">kbd.h:739</a></div></div>
<div class="ttc" id="aa00365_html_a2313d9960d832da75d595b73ff75d1dc"><div class="ttname"><a href="a00365.html#a2313d9960d832da75d595b73ff75d1dc">wcsncpycch</a></div><div class="ttdeci">DWORD wcsncpycch(LPWSTR pwsDest, LPCWSTR pwszSrc, DWORD cch)</div><div class="ttdef"><b>Definition:</b> <a href="a03650_source.html#l00146">rtl/random.c:146</a></div></div>
<div class="ttc" id="aa02105_html"><div class="ttname"><a href="a02105.html">_VSC_VK</a></div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00331">kbd.h:331</a></div></div>
<div class="ttc" id="aa00347_html_acf2af6af829e08806d9d90517f16c168"><div class="ttname"><a href="a00347.html#acf2af6af829e08806d9d90517f16c168">KLLF_ALTGR</a></div><div class="ttdeci">#define KLLF_ALTGR</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00452">kbd.h:452</a></div></div>
<div class="ttc" id="aa02121_html_a8847a55cd61ad14f67ab7059678b16e8"><div class="ttname"><a href="a02121.html#a8847a55cd61ad14f67ab7059678b16e8">tagKbdLayer::pVSCtoVK_E0</a></div><div class="ttdeci">PVSC_VK pVSCtoVK_E0</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00492">kbd.h:492</a></div></div>
<div class="ttc" id="aa02789_html_ac8cf048dc524a9e172bd89087361f74a"><div class="ttname"><a href="a02789.html#ac8cf048dc524a9e172bd89087361f74a">tagKBDFILE::pKbdTbl</a></div><div class="ttdeci">PKBDTABLES pKbdTbl</div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l01643">userk.h:1643</a></div></div>
<div class="ttc" id="aa02101_html_a71b44d3921c7f1ead4fac99b5cdc9734"><div class="ttname"><a href="a02101.html#a71b44d3921c7f1ead4fac99b5cdc9734">MODIFIERS::pVkToBit</a></div><div class="ttdeci">PVK_TO_BIT pVkToBit</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00300">kbd.h:300</a></div></div>
<div class="ttc" id="aa02889_html_a09237cbbe78ba3aebf853599bced5ac8"><div class="ttname"><a href="a02889.html#a09237cbbe78ba3aebf853599bced5ac8">tagTHREADINFO::spklActive</a></div><div class="ttdeci">PKL spklActive</div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l02275">userk.h:2275</a></div></div>
<div class="ttc" id="aa00929_html_ad584d240c6587fb7fa7c79d3d12cb42d"><div class="ttname"><a href="a00929.html#ad584d240c6587fb7fa7c79d3d12cb42d">gbAltGrDown</a></div><div class="ttdeci">BOOL gbAltGrDown</div><div class="ttdef"><b>Definition:</b> <a href="a00929_source.html#l00495">xlate.c:495</a></div></div>
<div class="ttc" id="aa00347_html_a7581c59d7f9bbb088b4e14a2ae29034a"><div class="ttname"><a href="a00347.html#a7581c59d7f9bbb088b4e14a2ae29034a">SCANCODE_SIMULATED</a></div><div class="ttdeci">#define SCANCODE_SIMULATED</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00740">kbd.h:740</a></div></div>
<div class="ttc" id="aa02793_html_a920717ffed3d170bbe0f357ad65985ef"><div class="ttname"><a href="a02793.html#a920717ffed3d170bbe0f357ad65985ef">tagKL::spkf</a></div><div class="ttdeci">KBDFILE * spkf</div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l01655">userk.h:1655</a></div></div>
<div class="ttc" id="aa02093_html_a7d8f7465b5c110b12d8c1805828a6e43"><div class="ttname"><a href="a02093.html#a7d8f7465b5c110b12d8c1805828a6e43">tagKE::bScanCode</a></div><div class="ttdeci">BYTE bScanCode</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00029">kbd.h:29</a></div></div>
<div class="ttc" id="aa02097_html"><div class="ttname"><a href="a02097.html">VK_TO_BIT</a></div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00262">kbd.h:262</a></div></div>
<div class="ttc" id="aa00347_html_aefbc9af4aee1f3134baf912e8ed01a35"><div class="ttname"><a href="a00347.html#aefbc9af4aee1f3134baf912e8ed01a35">aKEProcOEM</a></div><div class="ttdeci">KEPROC aKEProcOEM[]</div><div class="ttdef"><b>Definition:</b> <a href="a00722_source.html#l00305">kbd.c:305</a></div></div>
<div class="ttc" id="aa03608_html_afd1a0e78d1f88954d93e48ab3821781f"><div class="ttname"><a href="a03608.html#afd1a0e78d1f88954d93e48ab3821781f">UINT</a></div><div class="ttdeci">typedef UINT(FAR WINAPI *MSGSOUNDPROC)()</div></div>
<div class="ttc" id="aa02889_html"><div class="ttname"><a href="a02889.html">tagTHREADINFO</a></div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l02260">userk.h:2260</a></div></div>
<div class="ttc" id="aa00371_html_a906cb0845450a5d5422ce513ecd8a32f"><div class="ttname"><a href="a00371.html#a906cb0845450a5d5422ce513ecd8a32f">RIPMSG2</a></div><div class="ttdeci">#define RIPMSG2(flags, szFmt, p1, p2)</div><div class="ttdef"><b>Definition:</b> <a href="a00371_source.html#l00133">winerrp.h:133</a></div></div>
<div class="ttc" id="aa02121_html_a54bb31ee7c451644c4800f1605cf25cd"><div class="ttname"><a href="a02121.html#a54bb31ee7c451644c4800f1605cf25cd">tagKbdLayer::pVSCtoVK_E1</a></div><div class="ttdeci">PVSC_VK pVSCtoVK_E1</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00493">kbd.h:493</a></div></div>
<div class="ttc" id="aa02117_html_aecc277f34253dd62d9b6e388f104e407"><div class="ttname"><a href="a02117.html#aecc277f34253dd62d9b6e388f104e407">VSC_LPWSTR::pwsz</a></div><div class="ttdeci">LPWSTR pwsz</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00449">kbd.h:449</a></div></div>
<div class="ttc" id="aa02793_html"><div class="ttname"><a href="a02793.html">tagKL</a></div><div class="ttdef"><b>Definition:</b> <a href="a00899_source.html#l01649">userk.h:1649</a></div></div>
<div class="ttc" id="aa02121_html_a2c00703870b1480fb20afcc40a485289"><div class="ttname"><a href="a02121.html#a2c00703870b1480fb20afcc40a485289">tagKbdLayer::pKeyNamesExt</a></div><div class="ttdeci">VSC_LPWSTR * pKeyNamesExt</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00484">kbd.h:484</a></div></div>
<div class="ttc" id="aa00347_html_aa8286b6273fa173b26ea440fde99d8c9"><div class="ttname"><a href="a00347.html#aa8286b6273fa173b26ea440fde99d8c9">EXTENDED_BIT</a></div><div class="ttdeci">#define EXTENDED_BIT</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00047">kbd.h:47</a></div></div>
<div class="ttc" id="aa00347_html_a29061e7f1dbc13f5bbd8ec075bde8efc"><div class="ttname"><a href="a00347.html#a29061e7f1dbc13f5bbd8ec075bde8efc">gapulCvt_VK</a></div><div class="ttdeci">PULONG * gapulCvt_VK</div><div class="ttdef"><b>Definition:</b> <a href="a00722_source.html#l00120">kbd.c:120</a></div></div>
<div class="ttc" id="aa00347_html_aae5b70b46d04d5f37c1316575061f199"><div class="ttname"><a href="a00347.html#aae5b70b46d04d5f37c1316575061f199">SCANCODE_NUMPAD_FIRST</a></div><div class="ttdeci">#define SCANCODE_NUMPAD_FIRST</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00742">kbd.h:742</a></div></div>
<div class="ttc" id="aa02097_html_af5990335d7d5c046b0a21a04ab0a2969"><div class="ttname"><a href="a02097.html#af5990335d7d5c046b0a21a04ab0a2969">VK_TO_BIT::Vk</a></div><div class="ttdeci">BYTE Vk</div><div class="ttdef"><b>Definition:</b> <a href="a00347_source.html#l00263">kbd.h:263</a></div></div>
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_885cc87fac2d91e269af0a5a959fa5f6.html">E:</a></li><li class="navelem"><a class="el" href="dir_4e091ed8704426a7a4980368ba259fde.html">git</a></li><li class="navelem"><a class="el" href="dir_cd70cb5eb491250157f2d55d3ff4b13e.html">backup</a></li><li class="navelem"><a class="el" href="dir_ba2b673b566ba104b956abdc6dec0552.html">org</a></li><li class="navelem"><a class="el" href="dir_5bb0003d7907b45051943541418399f5.html">ntuser</a></li><li class="navelem"><a class="el" href="dir_2a0a56546b70a0973705719e6a88eab3.html">kernel</a></li><li class="navelem"><a class="el" href="a00929.html">xlate.c</a></li>
    <li class="footer">制作者
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
  </ul>
</div>
</body>
</html>
